import os
import subprocess
import sys
import shutil
from pathlib import Path
def install_requirements():
    """安装依赖包"""
    print("正在安装依赖包...")
    try:
        subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
        print("依赖包安装完成！")
    except subprocess.CalledProcessError as e:
        print(f"安装依赖包失败: {e}")
        return False
    return True

def build_exe():
    """构建exe文件"""
    print("开始构建exe文件...")
    
    # PyInstaller命令
    cmd = [
        "pyinstaller",
        "--onefile",  # 打包成单个文件
        "--windowed",  # 无控制台窗口
        "--name=企微社群专用",  # 可执行文件名
        "--icon=static/setting/logo.ico",  # 图标
        "--add-data=static;static",  # 包含静态资源
        "--hidden-import=customtkinter",
        "--hidden-import=PIL",
        "--hidden-import=keyboard",
        "--hidden-import=pyautogui",
        "--hidden-import=cv2",
        "gui_app.py"  # 主程序文件
    ]
    
    try:
        subprocess.check_call(cmd)
        print("exe文件构建完成！")
        return True
    except subprocess.CalledProcessError as e:
        print(f"构建exe文件失败: {e}")
        return False

def create_installer():
    """创建安装包"""
    print("正在创建安装包...")
    
    # 创建发布目录
    release_dir = Path("小八工具箱")
    release_dir.mkdir(exist_ok=True)
    
    # 复制exe文件
    exe_path = Path("dist/企微社群专用.exe")
    if exe_path.exists():
        shutil.copy2(exe_path, release_dir / "企微社群专用.exe")
        print("exe文件已复制到小八工具箱目录")
    
    # 复制静态资源
    static_dir = release_dir / "static"
    if Path("static").exists():
        shutil.copytree("static", static_dir, dirs_exist_ok=True)
        print("静态资源已复制到小八工具箱目录")
    
    # 创建README文件
    readme_content = """# 企微社群专用

## 使用说明

1. 双击运行 企微社群专用.exe
2. 点击"开始自动化"按钮启动程序
3. 按F8键可以暂停/继续程序执行
4. 程序会自动检测企业微信状态并进行扫码登录
5. 日志区域会实时显示程序运行状态

## 注意事项

- 请确保企业微信已安装并可以正常使用
- 首次运行可能需要扫码登录
- 程序运行时请勿移动鼠标或关闭企业微信窗口
- 如需停止程序，请点击"停止"按钮

## 系统要求

- Windows 10/11
- 企业微信客户端
"""
    
    with open(release_dir / "README.txt", "w", encoding="utf-8") as f:
        f.write(readme_content)
    
    print("小八工具箱创建完成！")
    print(f"发布文件位于: {release_dir.absolute()}")

def main():
    """主函数"""
    print("=== 企微社群专用打包程序 ===")
    
    # 检查Python版本
    if sys.version_info < (3, 8):
        print("错误: 需要Python 3.8或更高版本")
        return
    
    # 安装依赖
    if not install_requirements():
        return
    
    # 构建exe
    if not build_exe():
        return
        
    # 创建安装包
    create_installer()
    
    print("\n=== 打包完成 ===")
    print("请查看小八工具箱目录中的文件")

if __name__ == "__main__":
    main()
